# -*- coding: utf-8 -*-
from ferlons.lib.base import *
from tw.forms.datagrid import DataGrid
from tw.mods.pylonshf import validate
from ferlons.model import meta, Usuario
from ferlons.model import form
import time
from datetime import datetime
#from webhelpers.pagination import paginate

def link_edicao(usuario):
    return '<a href="/usuario/edit/%d">%s</a>' % (usuario.id, usuario.nome)

def link_remover(usuario):
    return '<a href="/usuario/delete/%d">X</a>' % (usuario.id, )

colunas_usuarios = [('Nome',link_edicao),('Matricula','matricula'),('Remover',link_remover)]

class UsuarioController(BaseController):

    def __before__(self):
        c.data_hoje = datetime.now().strftime('%d-%m-%Y')

    def index(self):
        c.usuarios = meta.Session.query(Usuario).all()
        #c.usuarios_paginator, c.usuarios_set = paginate(model.Usuario,page=1)
        c.grid_usuarios = DataGrid(fields = colunas_usuarios,engine_name = 'mako')
        return render('/usuario-list.html')

    def edit(self,id):
        usuario = meta.Session.query(Usuario).get(id)
        if not usuario:
            usuario = Usuario()
            usuario.id = 0
            usuario.data_admissao = datetime.now()
        c.form = form.usuario_form
        c.value = usuario
        return render('/usuario-edit.html')

    @validate(form.UsuarioToscaForm(), error_handler="edit")
    def save(self,id):
        if id != 0:
            usuario = meta.Session.query(Usuario).get(id)
        if not usuario:
            usuario = Usuario()
        usuario.matricula = request.params['matricula']
        usuario.cpf = request.params['cpf']
        usuario.nome = request.params['nome']
        usuario.senha = request.params['senha']
        data = datetime(*(time.strptime(request.params['data_admissao'], '%d/%m/%Y')[0:6]))
        usuario.data_admissao = data
        usuario.tipo = request.params['tipo']
        meta.Session.save_or_update(usuario)
        meta.Session.commit()
        redirect_to(action = 'index',id=None)

    def delete(self,id):
        usuario = meta.Session.query(Usuario).get(id)
        meta.Session.delete(usuario)
        meta.Session.commit()
        redirect_to(action='index',id=None)
